刚买了一台云服务器,或是自己折腾了一台Linux主机,是不是总觉得心里没底?怕被黑客入侵、怕数据丢失、怕莫名其妙被挂马。别慌,我刚开始玩服务器的时候也跟你一样,甚至半夜起来看日志。今天我就把自己踩过的坑和常用的安全配置分享给你,全程干货,照着操作就行。
一、SSH安全设置:把你的大门钥匙换一把
默认的SSH端口22是扫描器最爱光顾的地方,每天都有无数bot在尝试暴力破解。我见过一台裸奔的服务器,一天被尝试登录超过3000次。所以第一件事就是改端口、禁用root登录、使用密钥认证。
先备份SSH配置文件,然后编辑:
sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak
sudo vi /etc/ssh/sshd_config找到并修改或添加以下内容:
Port 2222 # 改掉默认22端口,选个不常用的PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 关闭密码登录,只允许密钥
PubkeyAuthentication yes # 开启密钥认证
MaxAuthTries 3 # 最多尝试3次
ClientAliveInterval 300 # 每300秒检测一次客户端存活
ClientAliveCountMax 2 # 连续2次无响应则断开
保存后重启服务:
sudo systemctl restart sshd在本地生成密钥对,然后上传公钥到服务器(前提是你还能用密码登录):
ssh-keygen -t ed25519 -C "your_email@example.com"
ssh-copy-id -p 2222 user@your_server_ip之后就可以用密钥登录了。记得测试一下,确认没问题再彻底关闭密码登录。改端口后,防火墙规则也要跟着调整,别把自己锁在门外。
二、防火墙配置:只开需要的门
我推荐用ufw(Uncomplicated Firewall),对新手特别友好。先安装并设置默认策略:
sudo apt install ufw -y
sudo ufw default deny incoming
sudo ufw default allow outgoing然后放行必要的端口,注意要包含你刚改的SSH端口:
sudo ufw allow 2222/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw enable查看状态:
sudo ufw status verbose如果用了云服务商的安全组(比如雨云服务器的安全组规则),记得在控制台同步放行这些端口,双重保险更安全。防火墙只开需要的端口,其他全部拒绝,这是最基础也是最重要的原则。
三、定期备份策略:别等数据没了才后悔
有一次我手滑删了一个数据库表,幸亏有备份才没被老板骂死。备份不是可选项,是必选项。最简单的方案是用crontab定期打包重要目录,然后同步到别的机器或对象存储。
写一个备份脚本,比如 /home/user/backup.sh:
#!/bin/bash备份网站和数据库到 /backup
BACKUP_DIR="/backup"
DATE=$(date +%Y%m%d%H%M)
mkdir -p $BACKUP_DIR
备份网站文件(假设网站目录是 /var/www/html)
tar -czf $BACKUP_DIR/www_$DATE.tar.gz /var/www/html
备份MySQL数据库(需要输入密码,建议使用配置文件)
mysqldump -u root -p'你的密码' --all-databases > $BACKUP_DIR/db_$DATE.sql
删除7天前的备份
find $BACKUP_DIR -type f -mtime +7 -exec rm {} \;
echo "备份完成:$DATE"
赋予执行权限并加入定时任务:
chmod +x /home/user/backup.sh
crontab -e添加一行,每天凌晨3点执行:
0 3 * /home/user/backup.sh建议把备份文件再远程同步一份,可以用rsync到另一台服务器,或者用云存储的CLI工具。备份策略的核心是3-2-1原则:3份数据,2种介质,1份异地。
四、常见攻击防护:用Fail2Ban拦截暴力破解
Fail2Ban是一个轻量级的入侵防护工具,能自动扫描日志,发现多次失败的登录尝试就封禁IP。安装配置很简单:
sudo apt install fail2ban -y
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vi /etc/fail2ban/jail.local在 [sshd] 部分修改:
[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 3600意思是:SSH服务最多失败3次,封禁1小时。重启服务:
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd这样就能看到被封禁的IP列表了。我用它之后,服务器日志里的暴力破解尝试几乎降为0。
另外,一定要记得定期更新系统补丁:
sudo apt update && sudo apt upgrade -y很多入侵都是利用已知漏洞,及时打补丁能堵住大部分坑。
五、我的经验与总结
安全配置不是一次性工作,而是一个持续的过程。除了上面这些,我还建议你:
- 用2FA认证保护SSH登录(Google Authenticator插件)
- 监控系统登录日志:
sudo tail -f /var/log/auth.log - 定期检查开放端口:
sudo netstat -tulpn - 不要在服务器上装来路不明的软件,尤其是root权限运行的
我刚开始用服务器时也怕这怕那,但把上面这些步骤都做完后,心里踏实多了。其实大部分攻击都是自动化脚本,只要把基本的安全措施做到位,就能挡住99%的骚扰。
记住:安全不是绝对,而是风险控制。你的目标是让攻击成本远大于收益。
如果你还没服务器,想练手的话,可以看看雨云服务器,新用户有优惠(优惠码:aabh),性价比不错,适合新手折腾。不过配置再好的服务器,不做好安全设置也等于裸奔。希望这篇指南能帮到你,有问题欢迎在评论区交流,我会尽量解答。
最后说一句:配置完一定要重启测试,确保没有把自己锁在门外。祝你的服务器稳如老狗,永不宕机!
评论区: